package a_02_wizhi.P_proxy.jdk;

import a_02_wizhi.P_proxy.PersonDao;
import a_02_wizhi.P_proxy.PersonDaoImpl;
import org.junit.Test;

import java.lang.reflect.Proxy;


/**
 * JDK动态代理
 *
 *
 */
public class ProxyJDKTest {  
    @Test  
    public void testJDKProxy() {  
        PersonDao target = new PersonDaoImpl();
        /**
         * 代理的三大参数 
         *  1、目标类的classLoader 
         *  2、目标类的实现的所有接口的.class 
         *  3、拦截器 
         */

        JDKProxyInterceptor JDKProxyInterceptor = new JDKProxyInterceptor(target);
        PersonDao personDao = (PersonDao)Proxy.newProxyInstance(
                target.getClass().getClassLoader(),
                target.getClass().getInterfaces(),
                JDKProxyInterceptor);

        personDao.savePerson();

        personDao.selectPerson();

        personDao.updatePerson();
    }  
}  